package com.system.manager.modules.authorized.enums;

import lombok.AllArgsConstructor;

/**
 * @Classname SubjectType
 * @Description TODO 用来表示当前对象的类型
 * @Date 2021/10/17 17:02
 * @Created by 杨小鹏：【241960695@qq.com】
 */
@AllArgsConstructor
public enum SubjectType {
    /**
     * 匿名用户
     */
    ANONYMOUS(0, "匿名用户"),

    /**
     * 非法用户
     */
    ILLEGAL(-1, "非法用户"),
    /**
     * 项目负责人
     */
    PROJECT_LEADER(3, "项目负责人"),

    /**
     * 企业管理员
     */
    ENTERPRISE_ADMIN(2, "企业管理员"),

    /**
     * 项目负责人
     */
    EXPERT(4, "专家"),

    zx(5, "商务部门管理员"),

    /**
     * 风险管理员
     */

    RISK_ADMIN(6,"风险管理员"),
    /**
     * 项目经办人
     */
    Project_Manager(6,"项目经办人"),

    /**
     * 系统管理员
     */
    SYSTEM_ADMIN(1, "系统管理员");


    // 对象类型
    private Integer type;

    // 对象类型表示的具体内容
    private String typeValue;

    /**
     * 获取当前对象的角色类型
     * @return
     */
    public Integer getType(){
        return type;
    }

    /**
     * 获取当前对象的角色类型的代表值
     * @return
     */
    public String getTypeValue(){
        return typeValue;
    }

    /**
     * 根据当前的type获取对应的枚举类型
     * @param type
     * @return
     */
    public static SubjectType valueOf(Integer type) {
        for (SubjectType subjectType : values()) {
            if (subjectType.getType().equals(type)) {
                return subjectType;
            }
        }
        return ANONYMOUS;
    }

    /**
     * 根据typeValue获取对应的类型
     * @param typeValue
     * @return
     */
    public static SubjectType valueTypeOf(String typeValue) {
        for (SubjectType subjectType : values()) {
            if (subjectType.getTypeValue().equals(typeValue)) {
                return subjectType;
            }
        }
        return ANONYMOUS;
    }
}
